package negocio;

import java.awt.event.KeyEvent;

public class RoboControlado extends Pergonagem implements IJogador {

    private int pontuacao;
    private float dirTiroX, dirTiroY = 20;
    private int alvo;

    public RoboControlado(Jogo jogo, int posX, int posY, Natureza natureza) {
        super("", "imagens/robo-controlado.png", jogo, posX, posY, natureza);
    }

    public void teclaPressionada(KeyEvent evento) {
        switch (evento.getKeyCode()) {
            case KeyEvent.VK_LEFT:
                posicao.dX = -5; // move para a esquerda
                dirTiroX = -40;
                dirTiroY = 0;
                break;
            case KeyEvent.VK_RIGHT:
                posicao.dX = 5; // move para a direita
                dirTiroX = 40;
                dirTiroY = 0;
                break;
            case KeyEvent.VK_UP:
                posicao.dY = -5; // move para cima
                dirTiroX = 0;
                dirTiroY = -40;
                break;
            case KeyEvent.VK_DOWN:
                posicao.dY = 5; // move para baixo
                dirTiroX = 0;
                dirTiroY = 40;
                break;
            case KeyEvent.VK_SPACE:
                jogo.desenhos.add(new Tiro(jogo, posicao.x, posicao.y, dirTiroX, dirTiroY, Natureza.VOADOR, this));
                break;
            case KeyEvent.VK_C:
                if(usaPoder(poder)){
                    jogo.desenhos.add(new DescargaEletrica(jogo, posicao.x, posicao.y, Natureza.FANTASMA, this));
                }
                break;
            case KeyEvent.VK_M:
                jogo.desenhos.add(new MisselPerseguidor(jogo, posicao.x, posicao.y, Natureza.VOADOR, this));
                break;
        }
    }

    public void teclaSolta(KeyEvent evento) {
        switch (evento.getKeyCode()) {
            case KeyEvent.VK_LEFT:
                posicao.dX = 0;
                break;
            case KeyEvent.VK_RIGHT:
                posicao.dX = 0;
                break;
            case KeyEvent.VK_UP:
                posicao.dY = 0;
                break;
            case KeyEvent.VK_DOWN:
                posicao.dY = 0;
                break;
        }
    }

    public void descargaEletriga() {
        if (this.getPoder() >= 50) {
            for (int x = 0; x < jogo.desenhos.size(); x++) {
                if (!jogo.desenhos.get(x).equals(this)) {
                    if (jogo.desenhos.get(x).natureza != Natureza.CHAO) {
                        if (jogo.desenhos.get(x).natureza != Natureza.FANTASMA) {
                            jogo.desenhos.get(x).morre();
                        }
                    }
                }
            }
            this.usaPoder(poder);
        }

    }

    public void pontua(int pontuacao) {
        this.pontuacao += pontuacao;
    }

    public int getPontuacao() {
        return this.pontuacao;
    }

    public boolean usaPoder(int valor){
        if (poder >= valor) {
            poder -= valor;
            poder = Math.max(0, poder);
            poder = Math.min(100, poder);
                return true;
        }
        return false;
    }

    public int getPoder() {
        return this.poder;
    }

    @Override
    public int getPoderInicial() {
        return 50;
    }

    @Override
    public int getVidaInicial() {
        return 50;
    }

    public void recarregaVida(int vida) {
        this.vida += vida;
    }

    
}
